🎖️GitЯра🎖️
src/helpers/TransportKeyStore.cpp 890a2e2cffa98dea3ca88db3c3aba72ef23ff3f7 (890a2e2c) Text, 2.21 KB
Tff7b72#Tff7b72include T8b949e"TransportKeyStore.h"
Tff7b72#Tff7b72include T8b949e<SHA256.h>
Tffa657uint16_t Td2a8ffTransportKey::calcTransportCodeTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Tff7b72const Tb4b4b4{
Tffa657uint16_t Te6edf3codeTb4b4b4;
Te6edf3SHA256 Te6edf3shaTb4b4b4;
Te6edf3shaTb4b4b4.Te6edf3resetHMACTb4b4b4(Te6edf3keyTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3type Tff7b72= Te6edf3packetTff7b72-Tff7b72>Te6edf3getPayloadTypeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3shaTb4b4b4.Te6edf3updateTb4b4b4(Tff7b72&Te6edf3typeTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3shaTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3packetTff7b72-Tff7b72>Te6edf3payloadTb4b4b4, Te6edf3packetTff7b72-Tff7b72>Te6edf3payload_lenTb4b4b4)Tb4b4b4;
Te6edf3shaTb4b4b4.Te6edf3finalizeHMACTb4b4b4(Te6edf3keyTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4, Tff7b72&Te6edf3codeTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3code Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{ T8b949e// reserve codes 0000 and FFFF
Te6edf3codeTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3code Tff7b72=Tff7b72= T79c0ff0xFFFFTb4b4b4) Tb4b4b4{
Te6edf3codeTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3codeTb4b4b4;
Tb4b4b4}
Tffa657bool Td2a8ffTransportKey::isNullTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Tff7b72sizeofTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3keyTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4) Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657trueTb4b4b4; T8b949e// key is all zeroes
Tb4b4b4}
Tffa657void Td2a8ffTransportKeyStore::putCacheTb4b4b4(Tffa657uint16_t Te6edf3idTb4b4b4, Tff7b72const Te6edf3TransportKeyTff7b72& Te6edf3keyTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3num_cache Tff7b72< Te6edf3MAX_TKS_ENTRIESTb4b4b4) Tb4b4b4{
Te6edf3cache_idsTb4b4b4[Te6edf3num_cacheTb4b4b4] Tff7b72= Te6edf3idTb4b4b4;
Te6edf3cache_keysTb4b4b4[Te6edf3num_cacheTb4b4b4] Tff7b72= Te6edf3keyTb4b4b4;
Te6edf3num_cacheTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// TODO: evict oldest cache entry
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffTransportKeyStore::getAutoKeyForTb4b4b4(Tffa657uint16_t Te6edf3idTb4b4b4, Tff7b72const Tffa657charTff7b72* Te6edf3nameTb4b4b4, Te6edf3TransportKeyTff7b72& Te6edf3destTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3num_cacheTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ T8b949e// first, check cache
Tff7b72if Tb4b4b4(Te6edf3cache_idsTb4b4b4[Te6edf3iTb4b4b4] Tff7b72=Tff7b72= Te6edf3idTb4b4b4) Tb4b4b4{ T8b949e// cache hit!
Te6edf3dest Tff7b72= Te6edf3cache_keysTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e// calc key for publicly-known hashtag region name
Te6edf3SHA256 Te6edf3shaTb4b4b4;
Te6edf3shaTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3strlenTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3shaTb4b4b4.Te6edf3finalizeTb4b4b4(Tff7b72&Te6edf3destTb4b4b4.Te6edf3keyTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3destTb4b4b4.Te6edf3keyTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3putCacheTb4b4b4(Te6edf3idTb4b4b4, Te6edf3destTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657int Td2a8ffTransportKeyStore::loadKeysForTb4b4b4(Tffa657uint16_t Te6edf3idTb4b4b4, Te6edf3TransportKey Te6edf3keysTb4b4b4[Tb4b4b4]Tb4b4b4, Tffa657int Te6edf3max_numTb4b4b4) Tb4b4b4{
Tffa657int Te6edf3n Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3num_cache Tff7b72&Tff7b72& Te6edf3n Tff7b72< Te6edf3max_numTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ T8b949e// first, check cache
Tff7b72if Tb4b4b4(Te6edf3cache_idsTb4b4b4[Te6edf3iTb4b4b4] Tff7b72=Tff7b72= Te6edf3idTb4b4b4) Tb4b4b4{
Te6edf3keysTb4b4b4[Te6edf3nTff7b72+Tff7b72+Tb4b4b4] Tff7b72= Te6edf3cache_keysTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3n Tff7b72> T79c0ff0Tb4b4b4) Tff7b72return Te6edf3nTb4b4b4; T8b949e// cache hit!
T8b949e// TODO: retrieve from difficult-to-copy keystore
T8b949e// store in cache (if room)
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3nTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3putCacheTb4b4b4(Te6edf3idTb4b4b4, Te6edf3keysTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}
Tffa657bool Td2a8ffTransportKeyStore::saveKeysForTb4b4b4(Tffa657uint16_t Te6edf3idTb4b4b4, Tff7b72const Te6edf3TransportKey Te6edf3keysTb4b4b4[Tb4b4b4]Tb4b4b4, Tffa657int Te6edf3numTb4b4b4) Tb4b4b4{
Te6edf3invalidateCacheTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// TODO: update hardware keystore
Tff7b72return Tffa657falseTb4b4b4; T8b949e// failed
Tb4b4b4}
Tffa657bool Td2a8ffTransportKeyStore::removeKeysTb4b4b4(Tffa657uint16_t Te6edf3idTb4b4b4) Tb4b4b4{
Te6edf3invalidateCacheTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// TODO: remove from hardware keystore
Tff7b72return Tffa657falseTb4b4b4; T8b949e// failed
Tb4b4b4}
Tffa657bool Td2a8ffTransportKeyStore::clearTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3invalidateCacheTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// TODO: clear hardware keystore
Tff7b72return Tffa657falseTb4b4b4; T8b949e// failed
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.06s